package com.wx.chapter19;

/**
 * @Author : 佩萁
 * Description :
 * @Create : 2023/8/30 - 10:36
 */
public class BufferedReader_ extends Reader_ {
    private Reader_ reader_;//属性是Reader_类型的，这样我们可以使用Reader_类型下的所有子类了

    //构造器传入Reader_ 然后可以调用子类
    public BufferedReader_(Reader_ reader_) {
        this.reader_ = reader_;
    }

    @Override
    public void readFile() {
        System.out.println(reader_.name);
        System.out.println(reader_.getClass());//class com.wx.chapter19.FileReader_ 可以看出来运行时类型是FileReader_
        reader_.readFile();//这里再封装一层，然后reader_的编译类型是Reader_  运行时类型是FileReader_
    }

    //我们也可以对Reader_的子类方法进行拓展
    public void readFiles(int num) {
        for (int i = 0; i < num; i++) {
            reader_.readFile();//调用Reader_下的方法
        }
    }
    //扩展 readString, 批量处理字符串数据
    public void readStrings(int num) {
        for(int i = 0; i <num; i++) {
            reader_.readString();
        }
    }
}
